-- 从参数中获取当前时间、五秒前的时间、请求限制和URI
local currentTime = tonumber(ARGV[1])
local fiveSecondsAgo = tonumber(ARGV[2])
local requestLimit = tonumber(ARGV[3])
local uri = ARGV[4]

-- 通过键获取有序集合中在指定时间范围内的成员
local zSetOps = redis.call('zrangebyscore', KEYS[1], fiveSecondsAgo, currentTime)

-- 如果成员数量未超过请求限制，则执行添加操作并返回1，否则返回0
if (not zSetOps or #zSetOps <= requestLimit) then
    -- 删除超过五秒之前的记录
    redis.call('zremrangebyscore', KEYS[1], 0, fiveSecondsAgo)
    -- 添加当前URI及其时间戳
    redis.call('zadd', KEYS[1], currentTime, uri)
    return 1
else
    return 0
end
